//
//  PMSegmentShape.h
//  PezMonkey
//
//  Created by Spence DiNicolantonio on 10/29/09.
//  Copyright 2009 Necrosoft. All rights reserved.
//

#import <Foundation/Foundation.h>

#import "PMCore.h"
#import "PMShape.h"


@interface PMSegmentShape : PMShape {

}

// Property definitions of getters/setters for data members stored by backend 
// Chipmunk structure. These properties are not synthesized, because their 
// implementations are given explicitly.
@property (assign) PMVect start;
@property (assign) PMVect end;
@property (assign) PMSegment segment;
@property (assign, readonly) PMVect normal;
@property (assign) PMFloat width;


#pragma mark -
#pragma mark Init
- (id)initWithBody:(PMBody *)aBody segment:(PMSegment)segment;
- (id)initWithBody:(PMBody *)aBody segment:(PMSegment)segment width:(PMFloat)width;
- (id)initWithBody:(PMBody *)aBody start:(PMVect)start end:(PMVect)end;
- (id)initWithBody:(PMBody *)aBody start:(PMVect)start end:(PMVect)end width:(PMFloat)width;

#pragma mark Convenience
+ (PMSegmentShape *)segmentShapeWithBody:(PMBody *)aBody segment:(PMSegment)segment;
+ (PMSegmentShape *)segmentShapeWithBody:(PMBody *)aBody segment:(PMSegment)segment width:(PMFloat)width;
+ (PMSegmentShape *)segmentShapeWithBody:(PMBody *)aBody start:(PMVect)start end:(PMVect)end;
+ (PMSegmentShape *)segmentShapeWithBody:(PMBody *)aBody start:(PMVect)start end:(PMVect)end width:(PMFloat)width;


#pragma mark -
#pragma mark Setters
- (void)setStart:(PMVect)start end:(PMVect)end;

@end
